package q189_rotate;

public class Solution_4 {
    /*
    数组翻转的解法 可以分为三个步骤 (假设 k = k mod n)
    1 翻转所有元素
    2 反转 0 -> k 区间的元素
    3 反转 k -> n-1 区间的元素
     */
    public void rotate(int[] nums, int k) {
        k %= nums.length;
        reverse(nums, 0, nums.length - 1);
        reverse(nums, 0, k - 1);
        reverse(nums, k, nums.length - 1);
    }

    public void reverse(int[] nums, int start, int end) {
        while (start < end) {
            int temp = nums[start];
            nums[start] = nums[end];
            nums[end] = temp;
            start += 1;
            end -= 1;
        }
    }

}
